﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using EFong.Contract;

namespace EFong.ServicesInterface
{
    [ServiceContract]
    public interface IFinanceService
    {
        [OperationContract]
        ServiceResult<decimal> CustomerSettle(CustomerSettlement customerSettlement);

        [OperationContract]
        ServiceResult<List<Order>> GetOrdersByCustomer(Customer customer);

        [OperationContract]
        ServiceResult VendorSettle(VendorOtherSettlement vendorSettlement);

        [OperationContract]
        ServiceResult UpdateVendorSettlementList(List<Contract.VendorSettlement> vendorSettlementList);

        [OperationContract]
        ServiceResult<List<VendorSettlement>> GetVendorSettlementByDate(DateTime startDate,DateTime endDate);

        [OperationContract]
        ServiceResult<List<Order>> GetVendorOrders();

        [OperationContract]
        ServiceResult Transfer(AccountTransfer accountTransfer);

        [OperationContract]
        ServiceResult Payment(OtherPayment otherPayment);

        [OperationContract]
        ServiceResult<List<Contract.TourPartySettlement>> GetPendingPayTouringParty();

        [OperationContract]
        ServiceResult TourPartyVendorSettlement(Contract.TourPartySettlement settlement, List<Contract.VendorSettlement> payedList, bool isComplete);

        [OperationContract]
        ServiceResult<List<Contract.飞机票支付单>> GetFlightOrder();

        [OperationContract]
        ServiceResult<List<Contract.火车票支付单>> GetTicketOrder();

        [OperationContract]
        ServiceResult<List<Contract.酒店支付单>> GetHotelOrder();

        [OperationContract]
        ServiceResult<List<Contract.其他支付单>> GetOtherOrder();

        [OperationContract]
        ServiceResult<List<Contract.自组团支付单>> GetTPOrder();

        [OperationContract]
        ServiceResult<List<Contract.Order>> GetHotelDiscountVendorOrders();

        [OperationContract]
        ServiceResult<decimal> GetCash();

        [OperationContract]
        ServiceResult SetCash(decimal cash);
    }
}
